<?php
class Listas_PreguntasController extends Zend_Controller_Action {
    private $nav;
    private $infoLista;
    private $infoSeccion;
    private $titulo_nombre = "Pregunta";
    private $listas_con_factores = array("F");
    private $titulo_tabs = array("Preguntas asignadas", "Banco de preguntas");

    public function init() {
        parent::init();
        $sesionListas = new Zend_Session_Namespace("LISTAS");
        $this->infoLista = $sesionListas->infoLista;
        $this->infoSeccion = $sesionListas->infoSeccion;
        if(empty($this->infoLista) || empty($this->infoSeccion)) {
            $this->_helper->redirector("ilegal", "error", "default");
        }
        $this->view->infoLista = $this->infoLista;
        $this->view->infoSeccion = $this->infoSeccion;
        //Zend_Debug::dump($this->infoSeccion);
        $this->nav = new App_Util_Navegacion();
        $titulo_secciones="";
        $titulo_elementos="Gestor de preguntas de sección";
        if($this->infoLista["tipolista"] == "C") {
            $this->nav->agregar_navegacion("Listas de completitud", "/listas/completitud/index");
            $titulo_secciones = "Secciones de lista de completitud";
        } elseif($this->infoLista["tipolista"] == "V") {
            $this->nav->agregar_navegacion("Listas de valoraciones", "/listas/valoraciones/index");
            $titulo_secciones = "Secciones de valoración";
        } elseif($this->infoLista["tipolista"] == "F") {
             if (App_User::getCodigoPadreRol()==Roles_Model_Roles::CODPADRE_IES){
                $params=App_Util_SafeUrl::encriptar(array("codproceso"=>$this->infoLista["codproceso"]),true);
                 $this->nav->agregar_navegacion("Datos del comité", "/solicitudes/index/autoevaluacion/{$params}");
            }elseif(App_User::getCodigoPadreRol()==Roles_Model_Roles::CODPADRE_PAR){
                $params=App_Util_SafeUrl::encriptar(array("codproceso"=>$this->infoLista["codproceso"],"tipotexto"=>6),true);
                $this->nav->agregar_navegacion("Informe pares", "/solicitudes/informepares/ponderacion/{$params}");
            }else{
                $this->nav->agregar_navegacion("Listas de factores", "/listas/factores/index");
            }
            
//            $this->nav->agregar_navegacion("Listas de factores", "/listas/factores/index");
            $titulo_secciones = "Factores de la lista";
            $titulo_elementos="Gestor de características del factor";
        }
        $this->nav->agregar_navegacion("{$titulo_secciones} :: {$this->infoLista["nombre"]}");
        $this->nav->modificar_navegacion("{$titulo_secciones} :: {$this->infoLista["nombre"]}", "/listas/secciones/index");
        $this->nav->agregar_navegacion("{$titulo_elementos} :: {$this->infoSeccion["nombre"]}");

        $this->view->nav = $this->nav;
        
        if(in_array($this->infoLista["tipolista"], $this->listas_con_factores)) {
            $this->view->placeholder("titulo")->set("Gestor de Características");
            $this->titulo_nombre = "Característica";
            $this->titulo_tabs = array("Características asignadas", "Banco de características");
        }
        $this->view->titulo_nombre = $this->titulo_nombre;
        
        $this->tabs = new App_Util_Tabs();
		$this->tabs->agregar_vista($this->titulo_tabs[0], "/listas/preguntas/asignadas");
		$this->tabs->agregar_vista($this->titulo_tabs[1], "/listas/preguntas/banco");
		$this->view->tabs = $this->tabs;
		$this->view->titulo_tabs = $this->titulo_tabs;
    }
    
    public function indexAction() {
        $this->_forward("asignadas");
    }
    
    public function dataAction() {
    	if($this->_hasParam("codelementolista")) {
    	    $codelementolista = $this->_getParam("codelementolista");
    	    $detalleLista = new Listas_Model_DetalleLista();
    	    $datos = $detalleLista->getElemento($codelementolista);
    	    $this->_helper->json($datos);
    	}
    }

    public function asignadasAction() {
        $this->tabs->actual($this->titulo_tabs[0]);
        
        $detalleLista = new Listas_Model_DetalleLista();
        $form = new Listas_Form_Elemento();
        $form->setAction($this->view->baseUrl("/listas/preguntas/asignadas"));
        $form->removeElement("btnSubmitAsig");
        $form->getElement("texto")->setLabel($this->titulo_nombre);
        
		if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
    	    //Zend_Debug::dump($form->getValues());
    	    try {
                $codelemento = $detalleLista->guardarElementoBanco($form->getValues());
                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
                $form->reset();
                
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
    	}
        
		$this->view->form = $form;
        $this->view->datos = $detalleLista->getElementosAsignados($this->infoSeccion["codseccionlista"]);
    }
    
    public function bancoAction() {
        $this->tabs->actual($this->titulo_tabs[1]);
        
		$detalleLista = new Listas_Model_DetalleLista();
		
		$form = new Listas_Form_Elemento();
    	$form->setAction($this->view->baseUrl("/listas/preguntas/banco"));
    	$form->getElement("texto")->setLabel($this->titulo_nombre);
    	
    	if($this->getRequest()->isGet()) {
			if ($this->_hasParam("modificar")) {
				$codelementolista = $this->_getParam("modificar");
				$form->getElement("btnSubmit")->setLabel("Modificar");
				$form->removeElement("btnSubmitAsig");
				$array_datos = $detalleLista->getElemento($codelementolista);
			}
			if ($this->_hasParam("eliminar")) {
				$codelementolista = $this->_getParam("eliminar");
				try {
					$detalleLista->eliminarElemento($codelementolista);
					$this->view->priorityMessenger("El elemento se ha eliminado", "success");
				} catch (Exception $e) {
					$this->view->priorityMessenger($e->getMessage(), "error");
				}
			}
			
		} elseif($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
    	    //Zend_Debug::dump($form->getValues());
    	    try {
    	        $form->getElement("tipolista")->setValue($this->infoLista["tipolista"]);
    	        $datos = $form->getValues();
                $codelemento = $detalleLista->guardarElementoBanco($datos);
                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
                
                if(strpos($form->getValue("btnSubmitAsig"), "asignar") !== false) {
                    $detalleLista->asignarElementoSeccion($codelemento, $this->infoSeccion["codseccionlista"]);
                    $form->reset();
                    $this->view->priorityMessenger("El elemento ha sido asignado", "success");
                }
                $this->_helper->redirector("banco");
                
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
    	}
    	$array_datos["elementocna"] = "S";
    	$array_datos["codinstitucion"] = NULL;
		if (App_User::getCodigoPadreRol()==Roles_Model_Roles::CODPADRE_IES && $this->infoLista["tipolista"]=="F"){
		    $array_datos["codinstitucion"] = App_User::getCodigoInstitucion();
		    $array_datos["elementocna"] = "N";
		}
        $form->populate($array_datos);
    	$this->view->form = $form;
    	$this->view->datos = $detalleLista->getElementosBanco($this->infoLista["tipolista"], $this->infoLista["codlista"],$array_datos["codinstitucion"]);
    }
    
    public function elementosasignarAction() {
		$seleccionados = $this->_getParam("seleccionados", array());
		if(count($seleccionados)==0) {
			$this->view->priorityMessenger("Debe seleccionar por lo menos un registro", "warning");
			$this->_helper->_redirector("banco");
		}
		try {
			$detalleLista = new Listas_Model_DetalleLista();
			$detalleLista->asignarArrayElementoSeccion($seleccionados, $this->infoSeccion["codseccionlista"]);
			$this->view->priorityMessenger("Los elementos se han asignado correctamente", "success");
			
		} catch (Exception $e) {
			$this->view->priorityMessenger($e->getMessage(), "error");
		}
		$this->_helper->_redirector("banco");
	}
  
    public function elementosremoverAction() {
		$seleccionados = $this->_getParam("seleccionados", array());
		if(count($seleccionados)==0) {
			$this->view->priorityMessenger("Debe seleccionar por lo menos un registro", "warning");
			$this->_helper->_redirector("asignadas");
		}
		try {
			$detalleLista = new Listas_Model_DetalleLista();
			$detalleLista->removerArrayElementoSeccion($seleccionados, $this->infoSeccion["codseccionlista"]);
			$this->view->priorityMessenger("Los elementos se han removido correctamente", "success");
			
		} catch (Exception $e) {
			$this->view->priorityMessenger($e->getMessage(), "error");
		}
		$this->_helper->_redirector("asignadas");
	}

  
}//fin de la clase

